package cn.zhouchao.async;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;
/**
 * 生成者
 */
public class AsyncProducer {

    public static void main(String[] args) throws Exception {
        // 1.创建mq的生产者对象
        DefaultMQProducer producer = new DefaultMQProducer("async_producer_group");
        // 2.设置NameServer的地址
        producer.setNamesrvAddr("localhost:9876");
        // 3.启动Producer实例
        producer.start();

        // 4.创建消息，并指定Topic，Tag和消息体
        Message msg = new Message("async_topic" /* Topic */,
                "async_tag" /* Tag */,
                "你好啊，异步消息！".getBytes(StandardCharsets.UTF_8)
        );
        // 5.发送同步消息到一个Broker
        producer.send(msg, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("消息发送成功：" + sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("消息发送失败：" + throwable);
            }
        });

        System.out.println("这句话绝对先执行!!!!");

        // 7.如果不再发送消息，关闭Producer实例。
        // producer.shutdown();
    }

}